package com.demo.core.dao;

import java.util.Map;

import com.demo.core.dao.base.BaseCoreDao;
import com.demo.core.dao.base.support.SearchDaoSupport;
import com.demo.core.model.Org;

/**
 * 机构数据访问层(DAO)接口
 * 
 * @author ryuu.kk
 */
public interface OrgDao extends BaseCoreDao<Org, Long>, SearchDaoSupport<Org> {
	
	/**
	 * 更新机构信息
	 * @param org 机构对象
	 * @param orgInfo 更新条件
	 * @return 成功操作数
	 */
	int updateInfo(Org org, Map<String, Object> orgInfo);
	
	/**
	 * 更新机构状态信息
	 * @param org 机构模型
	 * @param params 更新条件
	 * @return 成功操作数 
	 */
	int updateStatus(Org org, Map<String, Object> params);
	
	/**
	 * 更新机构所在区域
	 * @param org 机构模型
	 * @param params 更新条件
	 * @return 成功操作数 
	 */
	int updateArea(Org org, Map<String, Object> params);
	
	/**
	 * 更新机构所属的父级机构ID
	 * @param orgParent 机构参数
	 * @return 成功操作数 
	 * @deprecated 未解决更新左序和右序问题
	 */
	int updateParent(Map<String, Object> orgParent);
	
	/**
	 * 查询机构树
	 * 通过参数设定是从根开始查询还是从叶子节点开始
	 * 返回机构模型Org
	 * Org.getParent()将是它的根节点
	 * Org.getChild()将是它的叶子节点
	 * 当不存在节点时，返回null;
	 * @param params 查询参数
	 * @return 机构模型Org
	 */
	Org tree(Map<String, Object> params);

}
